This invention relates to computer systems, and more particularly to replication of data.
Data replication is the process of maintaining multiple copies of a database object in a distributed database system. Performance improvements can be achieved when data replication is employed, since multiple access locations exist for the access and modification of the replicated data. For example, if multiple copies of a data object are maintained, an application can access the logically “closest” copy of the data object to improve access times and minimize network traffic. In addition, data replication provides greater fault tolerance in the event of a server failure, since the multiple copies of the data object effectively become online backup copies if a failure occurs.
One type of database application for which data replication is particularly useful is the replication of data for directory information systems. Directory information systems provide a framework for the storage and retrieval of information that is used to identify and locate the details of individuals and organizations, such as telephone numbers, postal addresses, and email addresses.
One common directory system is a directory based on the Lightweight Directory Access Protocol (“LDAP”). LDAP is an object-oriented directory protocol that was developed at the University of Michigan, originally as a front end to access directory systems organized under the X.500 standard for open electronic directories (which was originally promulgated by the Comite Consultantif International de Telephone et Telegraphe “CCITT” in 1988). Stand alone LDAP server implementations are now commonly available to store and maintain directory information. Further details of the LDAP directory protocol can be located at the LDAP-devoted website maintained by the OpenLDAP Organization at http://www.openldap.org.
LDAP directory systems are normally organized in a hierarchical structure having entries organized in the form of a tree, which is referred to as a directory information tree (“DIT”). The DIT is often organized to reflect political, geographic, or organizational boundaries. A unique name or ID (which is commonly called a “distinguished name”) identifies each LDAP entry in the DIT. An LDAP entry is a collection of one or more entry attributes. Each entry attribute has a “type” and one or more “values.” Each entry belongs to a particular object class. Entries that are members of the same object class share a common composition of possible entry attribute types.
Some LDAP replication systems utilize a replication ring. The replication ring is a loop of primary LDAP nodes which replicate the same LDAP object across the nodes. FIG. 1A shows replication ring 100, and primary nodes 102, 104, and 106. To add a node to the replication ring, a new node takes its place on the ring such as primary node 108. Each primary node pushes its changes to each of the other primary nodes. Thus, each node pushes each change n−1 times, where n is the number of nodes. In a system with a large number of nodes, the replication process can be burdensome on each node. A solution is needed to add new nodes to a replication ring without creating additional replication burden to the existing nodes.
Another drawback to some replication systems is that each node must be identical. This required updating to data on each node that may not be required on each node. This is burdensome and inefficient.
One embodiment for adding new nodes to a replication ring without burdening the existing master nodes includes creation of fan-out nodes, where fan-out nodes are nodes that do not have to be placed on the replication ring.